package org.example2;

/**
 *  https://www.jb51.net/article/189792.htm
 * 这个类相当于你自己
 */
public class Local implements CallBack, Runnable {

    private Remote remote;

    /**
     * 发送出去的消息
     */
    private String message;

    public Local(Remote remote, String message) {
//        super();
        this.remote = remote;
        this.message = message;
    }

    /**
     * 发送消息
     */
    public void sendMessage() {
        //创建一个新的线程发送消息
        Thread thread = new Thread(this);
        thread.start();
        System.out.println("主线程已结束----本地已经发送了消息:"+message+"----线程名:"+Thread.currentThread().getName());
    }

    /**
     * 发送消息后的回调函数
     */
    public void callBack(Object... objects) {
        /**打印返回的消息**/
        System.out.println("callBack方法执行了."+objects[0] +"------线程是:"+Thread.currentThread().getName());
    }

    public static void main(String[] args) {
        Local local = new Local(new Remote(), "Hello");
        local.sendMessage();
        System.out.println("main主线程已结束");
    }

    public void run() {
        remote.executeMessage(message, this);
        //这相当于给同学打电话，打完电话之后，这个线程就可以去做其他事情了，
        // 只不过等到你的同学打回电话给你的时候你要做出响应
    }
}